package controllers;

import play.mvc.Controller;

public class ProfesorCtrl extends Controller {
	//
	// private static SessionObj getSessionObj() {
	// String json = session(UserCtrl.SESSION_OBJ);
	// if (json != null)
	// return Json.fromJson(Json.parse(session(UserCtrl.SESSION_OBJ)),
	// SessionObj.class);
	// return null;
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("getMisAsignaturas")
	// public static Result getMisAsignaturas() {
	//
	// List<MateriaCurso> asignaturas = ProfesorSrv.getAsignaturasProfesor(
	// getSessionObj().getProfesor().getId(),
	// ColegioSrv.getColegio(
	// getSessionObj().getProfesor().getIdColegio())
	// .getIdCalendarioAcademicoActual());
	//
	// return ok(Json.toJson(asignaturas));
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("read")
	// public static Result getCalificacionesPeriodo(Long idMateria, Long
	// idCurso) {
	//
	// return ok(Json.toJson(ProfesorSrv.getCalificacionesPeriodo(
	// idMateria,
	// idCurso,
	// ColegioSrv.getColegio(
	// getSessionObj().getProfesor().getIdColegio())
	// .getIdCalendarioAcademicoActual())));
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("read")
	// public static Result getCalificacionesPeriodos(Long idMateria, Long
	// idCurso) {
	//
	// Colegio colegio = ColegioSrv.getColegio(getSessionObj().getProfesor()
	// .getIdColegio());
	// List<CalificacionPeriodo> calificacionesPeriodo = ProfesorSrv
	// .getCalificacionesPeriodos(idMateria, idCurso,
	// colegio.getIdCalendarioAcademicoActual(),
	// colegio.getIdPeriodoActual());
	// return ok(Json.toJson(calificacionesPeriodo));
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("read")
	// public static Result getMateriasGrado() {
	//
	// return ok(Json.toJson(ProfesorSrv.getMateriasGrado(ColegioSrv
	// .getColegio(getSessionObj().getProfesor().getIdColegio())
	// .getIdCalendarioAcademicoActual(), getSessionObj()
	// .getProfesor().getId())));
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("getIndicadores")
	// public static Result getIndicadores(Long idMateria, Long idGrado) {
	// Long idPeriodo = ColegioSrv.getColegio(
	// getSessionObj().getProfesor().getIdColegio())
	// .getIdPeriodoActual();
	// List<Indicador> inds = DAO
	// .execute(
	// "SELECT i FROM Indicador i WHERE i.idMateria = :idMateria AND i.idGrado = :idGrado AND i.idPeriodo = :idPeriodo",
	// -1, "idMateria", idMateria, "idGrado", idGrado,
	// "idPeriodo", idPeriodo);
	//
	// Map<CategoriaIndicador, List<Indicador>> indicadores = new
	// HashMap<CategoriaIndicador, List<Indicador>>();
	// for (CategoriaIndicador c : CategoriaIndicador.values())
	// indicadores.put(c, new ArrayList<Indicador>());
	//
	// for (Indicador i : inds)
	// indicadores.get(i.getCategoria()).add(i);
	// return ok(Json.toJson(inds));
	// }
	//
	// @Transactional
	// @NamedAction("newIndicador")
	// public static Result newIndicador(Long idMateria, Long idGrado) {
	// Long idPeriodo = ColegioSrv.getColegio(
	// getSessionObj().getProfesor().getIdColegio())
	// .getIdPeriodoActual();
	// if (!checkColegio(idMateria, idGrado))
	// return unauthorized();
	// JsonNode asJson = request().body().asJson();
	// Indicador i = Json.fromJson(asJson, Indicador.class);
	//
	// i.setIdMateria(idMateria);
	// i.setIdGrado(idGrado);
	// i.setIdPeriodo(idPeriodo);
	//
	// i.generateConsecutivo();
	// DAO.persist(i);
	// return ok(Json.toJson(i));
	// }
	//
	// @Transactional
	// @NamedAction("updateIndicador")
	// public static Result updateIndicador(Long idMateria, Long idGrado,
	// String categoria, Integer consecutivo) {
	// if (!checkColegio(idMateria, idGrado))
	// return unauthorized();
	// Long idPeriodo = ColegioSrv.getColegio(
	// getSessionObj().getProfesor().getIdColegio())
	// .getIdPeriodoActual();
	// Indicador i = Json.fromJson(request().body().asJson(), Indicador.class);
	// i.setIdPeriodo(idPeriodo);
	// DAO.merge(i);
	// return ok();
	// }
	//
	// @Transactional
	// @NamedAction("deleteIndicador")
	// public static Result deleteIndicador(Long idMateria, Long idGrado,
	// String categoria, Integer consecutivo) {
	// if (!checkColegio(idMateria, idGrado))
	// return unauthorized();
	//
	// Long idPeriodo = ColegioSrv.getColegio(
	// getSessionObj().getProfesor().getIdColegio())
	// .getIdPeriodoActual();
	// Indicador old = DAO.find(Indicador.class, new IndicadorId(idMateria,
	// idGrado, idPeriodo, CategoriaIndicador.valueOf(categoria),
	// consecutivo));
	//
	// if (old != null)
	// DAO.remove(old);
	// return ok();
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("read")
	// public static Result getCurso(Long idCurso) {
	// Curso curso = DAO.find(Curso.class, idCurso);
	// return ok(Json.toJson(curso));
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("read")
	// public static Result getEstudiantesCurso(Long idCurso) {
	// return ok(Json.toJson(ProfesorSrv.getEstudiantesCurso(idCurso)));
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("getIndicadoresEstudiantes")
	// public static Result getIndicadoresEstudiantes(Long idCurso, Long
	// idMateria) {
	// Curso curso = DAO.find(Curso.class, idCurso);
	// Long idPeriodoActual = ColegioSrv.getColegio(
	// getSessionObj().getProfesor().getIdColegio())
	// .getIdPeriodoActual();
	// List<IndicadorEstudiantePeriodo> res = DAO
	// .execute(
	// "SELECT c FROM IndicadorEstudiantePeriodo c WHERE c.idMateria = :idMateria AND c.idGrado = :idGrado AND c.idPeriodo = :idPeriodo",
	// -1, "idMateria", idMateria, "idGrado",
	// curso.getIdGrado(), "idPeriodo", idPeriodoActual);
	// return ok(Json.toJson(res));
	// }
	//
	// @Transactional
	// @NamedAction("newIndicadorEstudiante")
	// public static Result newIndicadorEstudiante() {
	// JsonNode asJson = request().body().asJson();
	// IndicadorEstudiantePeriodo ic = Json.fromJson(asJson,
	// IndicadorEstudiantePeriodo.class);
	// ic.setIdPeriodo(ColegioSrv.getColegio(
	// getSessionObj().getProfesor().getIdColegio())
	// .getIdPeriodoActual());
	// DAO.merge(ic);
	// return ok(Json.toJson(ic));
	// }
	//
	// @Transactional
	// @NamedAction("deleteIndicadorEstudiante")
	// public static Result deleteIndicadorEstudiante(Long idEstudiante,
	// Long idMateria, Long idGrado, String categoriaIndicador,
	// Integer consecutivoIndicador) {
	// Long idPeriodoActual = ColegioSrv.getColegio(
	// getSessionObj().getProfesor().getIdColegio())
	// .getIdPeriodoActual();
	// IndicadorEstudiantePeriodoId id = new IndicadorEstudiantePeriodoId(
	// idEstudiante, idMateria, idGrado, idPeriodoActual,
	// CategoriaIndicador.valueOf(categoriaIndicador),
	// consecutivoIndicador);
	// IndicadorEstudiantePeriodo ic = DAO.find(
	// IndicadorEstudiantePeriodo.class, id);
	// DAO.remove(ic);
	// return ok();
	// }
	//
	// @Transactional
	// @NamedAction("setCalificacionPeriodo")
	// public static Result setCalificacionPeriodo() {
	// CalificacionPeriodo ic = Json.fromJson(request().body().asJson(),
	// CalificacionPeriodo.class);
	// ic.setIdPeriodo(ColegioSrv.getColegio(
	// getSessionObj().getProfesor().getIdColegio())
	// .getIdPeriodoActual());
	// DAO.merge(ic);
	// return ok(Json.toJson(ic));
	// }
	//
	// @Transactional
	// @NamedAction("sendMessage")
	// public static Result sendMessage() {
	// // Comunicado m = Json.fromJson(request().body().asJson(),
	// // Comunicado.class);
	//
	// // TODO
	//
	// return ok();
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("read")
	// public static Result getMaterias() {
	// return ok(Json.toJson(ColegioSrv.getMateriasColegio(getSessionObj()
	// .getProfesor().getIdColegio())));
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("read")
	// public static Result getGrados() {
	//
	// return ok(Json.toJson(ColegioSrv.getGradosColegio(getSessionObj()
	// .getProfesor().getIdColegio())));
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("read")
	// public static Result getLista(Long idMateria, Long idCurso)
	// throws JRException {
	// List<Object[]> res = DAO.executeNative(Queries.getLista(), -1,
	// "idCurso", idCurso);
	//
	// List<EstudianteLista> estudiantes = new ArrayList<EstudianteLista>();
	// for (Object[] obs : res)
	// estudiantes.add(new EstudianteLista(((Long) obs[0]).toString(),
	// (String) obs[1]));
	//
	// Object[] obs = DAO.executeNative(Queries.getDatosLista(), 1,
	// "idMateria", idMateria, "idCurso", idCurso);
	//
	// HashMap<String, Object> datos = new HashMap<String, Object>();
	// datos.put("NOMBRE_COLEGIO", obs[0]);
	// datos.put("NOMBRE_PROFESOR", obs[1]);
	// datos.put("MATERIA", obs[2]);
	// datos.put("JORNADA", Jornada.valueOf(obs[3].toString()).nombre);
	// datos.put("PERIODO", obs[4].toString());
	// datos.put("CURSO", obs[5]);
	// datos.put("CALENDARIO", obs[6]);
	// datos.put("GRADO", obs[7]);
	//
	// byte[] bytes = Report.generate(
	// "private/jasperTemplates/Listado1.jasper", "Lista.pdf", datos,
	// estudiantes, response());
	//
	// return ok(bytes);
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("read")
	// public static Result getMyInfo() {
	// return ok(Json.toJson(DAO.find(Profesor.class, getSessionObj()
	// .getProfesor().getId())));
	// }
	//
	// @Transactional(readOnly = true)
	// @NamedAction("read")
	// public static Result getCursos() {
	// System.out.println("Id profesor: "
	// + getSessionObj().getProfesor().getId());
	// String s =
	// "SELECT DISTINCT c FROM Curso c, MateriaCurso mc WHERE c.id = mc.idCurso AND mc.profesor.id = :idProfesor AND c.idCalendarioAcademico = :idCalendarioAcademico";
	// List<Curso> res = DAO.execute(s, -1, "idProfesor", getSessionObj()
	// .getProfesor().getId(), "idCalendarioAcademico", ColegioSrv
	// .getColegio(getSessionObj().getProfesor().getIdColegio())
	// .getIdCalendarioAcademicoActual());
	// return ok(Json.toJson(res));
	// }
	//
	// private static boolean checkColegio(Long idMateria, Long idGrado) {
	// Materia m = DAO.find(Materia.class, idMateria);
	// if (m == null
	// || !m.getIdColegio().equals(
	// getSessionObj().getProfesor().getIdColegio()))
	// return false;
	// Grado g = DAO.find(Grado.class, idGrado);
	// if (g == null
	// || !g.getIdColegio().equals(
	// getSessionObj().getProfesor().getIdColegio()))
	// return false;
	// return true;
	// }
}
